home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/env python
-
- import unittest
- import os
- from test import test_support
- from Tkinter import Tcl
- from _tkinter import TclError
-
- class TclTest(unittest.TestCase):
-
- def setUp(self):
- self.interp = Tcl()
-
- def testEval(self):
- tcl = self.interp
- tcl.eval('set a 1')
- self.assertEqual(tcl.eval('set a'),'1')
-
- def testEvalException(self):
- tcl = self.interp
- self.assertRaises(TclError,tcl.eval,'set a')
-
- def testEvalException2(self):
- tcl = self.interp
- self.assertRaises(TclError,tcl.eval,'this is wrong')
-
- def testCall(self):
- tcl = self.interp
- tcl.call('set','a','1')
- self.assertEqual(tcl.call('set','a'),'1')
-
- def testCallException(self):
- tcl = self.interp
- self.assertRaises(TclError,tcl.call,'set','a')
-
- def testCallException2(self):
- tcl = self.interp
- self.assertRaises(TclError,tcl.call,'this','is','wrong')
-
- def testSetVar(self):
- tcl = self.interp
- tcl.setvar('a','1')
- self.assertEqual(tcl.eval('set a'),'1')
-
- def testSetVarArray(self):
- tcl = self.interp
- tcl.setvar('a(1)','1')
- self.assertEqual(tcl.eval('set a(1)'),'1')
-
- def testGetVar(self):
- tcl = self.interp
- tcl.eval('set a 1')
- self.assertEqual(tcl.getvar('a'),'1')
-
- def testGetVarArray(self):
- tcl = self.interp
- tcl.eval('set a(1) 1')
- self.assertEqual(tcl.getvar('a(1)'),'1')
-
- def testGetVarException(self):
- tcl = self.interp
- self.assertRaises(TclError,tcl.getvar,'a')
-
- def testGetVarArrayException(self):
- tcl = self.interp
- self.assertRaises(TclError,tcl.getvar,'a(1)')
-
- def testUnsetVar(self):
- tcl = self.interp
- tcl.setvar('a',1)
- self.assertEqual(tcl.eval('info exists a'),'1')
- tcl.unsetvar('a')
- self.assertEqual(tcl.eval('info exists a'),'0')
-
- def testUnsetVarArray(self):
- tcl = self.interp
- tcl.setvar('a(1)',1)
- tcl.setvar('a(2)',2)
- self.assertEqual(tcl.eval('info exists a(1)'),'1')
- self.assertEqual(tcl.eval('info exists a(2)'),'1')
- tcl.unsetvar('a(1)')
- self.assertEqual(tcl.eval('info exists a(1)'),'0')
- self.assertEqual(tcl.eval('info exists a(2)'),'1')
-
- def testUnsetVarException(self):
- tcl = self.interp
- self.assertRaises(TclError,tcl.unsetvar,'a')
-
- def testEvalFile(self):
- tcl = self.interp
- filename = "testEvalFile.tcl"
- fd = open(filename,'w')
- script = """set a 1
- set b 2
- set c [ expr $a + $b ]
- """
- fd.write(script)
- fd.close()
- tcl.evalfile(filename)
- os.remove(filename)
- self.assertEqual(tcl.eval('set a'),'1')
- self.assertEqual(tcl.eval('set b'),'2')
- self.assertEqual(tcl.eval('set c'),'3')
-
- def testEvalFileException(self):
- tcl = self.interp
- filename = "doesnotexists"
- try:
- os.remove(filename)
- except Exception,e:
- pass
- self.assertRaises(TclError,tcl.evalfile,filename)
-
- def testPackageRequireException(self):
- tcl = self.interp
- self.assertRaises(TclError,tcl.eval,'package require DNE')
-
- def testLoadTk(self):
- import os
- if 'DISPLAY' not in os.environ:
- # skipping test of clean upgradeability
- return
- tcl = Tcl()
- self.assertRaises(TclError,tcl.winfo_geometry)
- tcl.loadtk()
- self.assertEqual('1x1+0+0', tcl.winfo_geometry())
-
- def testLoadTkFailure(self):
- import os
- old_display = None
- import sys
- if (sys.platform.startswith('win') or
- sys.platform.startswith('darwin') or
- sys.platform.startswith('cygwin')):
- return # no failure possible on windows?
- if 'DISPLAY' in os.environ:
- old_display = os.environ['DISPLAY']
- del os.environ['DISPLAY']
- # on some platforms, deleting environment variables
- # doesn't actually carry through to the process level
- # because they don't support unsetenv
- # If that's the case, abort.
- display = os.popen('echo $DISPLAY').read().strip()
- if display:
- return
- try:
- tcl = Tcl()
- self.assertRaises(TclError, tcl.winfo_geometry)
- self.assertRaises(TclError, tcl.loadtk)
- finally:
- if old_display is not None:
- os.environ['DISPLAY'] = old_display
-
- def test_main():
- test_support.run_unittest(TclTest)
-
- if __name__ == "__main__":
- test_main()
-